package com.vchello.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Encoder;
import javax.crypto.Mac;
public class AliyunAPISender {
    /*
     * 计算MD5+BASE64
     */
    public static String MD5Base64(String s) {
        if (s == null)
            return null;
        String encodeStr = "";
        byte[] utfBytes = s.getBytes();
        MessageDigest mdTemp;
        try {
            mdTemp = MessageDigest.getInstance("MD5");
            mdTemp.update(utfBytes);
            byte[] md5Bytes = mdTemp.digest();
            BASE64Encoder b64Encoder = new BASE64Encoder();
            encodeStr = b64Encoder.encode(md5Bytes);
        } catch (Exception e) {
            throw new Error("Failed to generate MD5 : " + e.getMessage());
        }
        return encodeStr;
    }
    /*
     * 计算 HMAC-SHA1
     */
    public static String HMACSha1(String data, String key) {
        String result;
        try {
            // System.out.println("data: " + data);
            // System.out.println("key: " + key);
            SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(signingKey);
            byte[] rawHmac = mac.doFinal(data.getBytes());
            result = (new BASE64Encoder()).encode(rawHmac);
        } catch (Exception e) {
            throw new Error("Failed to generate HMAC : " + e.getMessage());
        }
        return result;
    }
    /*
     * 等同于javaScript中的 new Date().toUTCString();
     */
    public static String toGMTString(Date date) {
        SimpleDateFormat df = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK);
        df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));
        return df.format(date);
    }
    /*
     * 发送POST请求
     */
    public static String sendPost(String url, String body, String ak_id, String ak_secret, String appCode) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            /*
             * http header 参数
             */
            String method = "POST";
            String accept = "json";
            String content_type = "application/json";
            String path = realUrl.getFile();
            String date = toGMTString(new Date());
            // 1.对body做MD5+BASE64加密
            String bodyMd5 = MD5Base64(body);
            String stringToSign = method + "\n" + accept + "\n" + bodyMd5 + "\n" + content_type + "\n" + date + "\n"
                    + path;
            // 2.计算 HMAC-SHA1
            String signature = HMACSha1(stringToSign, ak_secret);
            // 3.得到 authorization header
            String authHeader = "Dataplus " + ak_id + ":" + signature;
            // 打开和URL之间的连接/**
	       	/* 忽略HTTPS请求的SSL证书，必须在openConnection之前调用
	    	* @throws Exception
	    	*/
    		SslUtils.ignoreSsl();
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", accept);
            conn.setRequestProperty("content-type", content_type);
            conn.setRequestProperty("date", date);
            conn.setRequestProperty("Authorization", authHeader);
            conn.setRequestProperty("Accept-Charset", "UTF-8");
            conn.setRequestProperty("Authorization", "APPCODE "+appCode);
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(body);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            InputStream is;
            HttpURLConnection httpconn = (HttpURLConnection) conn;
            if (httpconn.getResponseCode() == 200) {
                is = httpconn.getInputStream();
            } else {
                is = httpconn.getErrorStream();
            }
            InputStreamReader sr = new InputStreamReader(is,"utf-8");
            in = new BufferedReader(sr);
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常！" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }
    
    public static void main(String[] args) {
    	String appCode = "APPCODE 902b4b5583394fabb98e3b605d486d9a";
		String bodys = "{\"inputs\":[{\"image\":{\"dataType\":50,\"dataValue\":\"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\"}}]}";
		AliyunAPISender.sendPost("https://dm-57.data.aliyun.com/rest/160601/ocr/ocr_business_card.json", bodys, "23647111", "0da4f6206dae46a491c0ea7bacba2954", appCode);
	}
	
}